package com.yook;

import java.util.concurrent.*;

public class YookDemo7 {
    public static void main(String[] args) throws Exception {
        int repeat = 2; // 生产以及消费的次数
        Exchanger<String> exc = new Exchanger<>(); // 定义一个交换空间

        new Thread(() -> {
            for (int y = 0; y < repeat; y++) { // 循环生产数据
                String info = null; // 保存要生产的数据
                if (y % 2 == 0) {
                    info = "李兴华高薪就业编程训练营: edu.yook.com"; // 生产数据
                } else {
                    info = "沐言科技: www.yook.com"; // 生产数据
                }
                try {
                    TimeUnit.SECONDS.sleep(1);
                    exc.exchange(info); // 数据存储
                    System.out.println(" [" + Thread.currentThread().getName() + "] " + info);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }, "信息生产者").start(); // 线程启动

        new Thread(() -> {
            for (int y = 0; y < repeat; y++) { // 循环获取数据
                try {
                    TimeUnit.SECONDS.sleep(1);
                    String info = exc.exchange(null); // 数据获取
                    System.out.println(" [" + Thread.currentThread().getName() + "] " + info);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }, "信息消费者").start(); // 线程启动
    }
}